Object based computer systems facilitate multitasking and multi-user operations where common data files may be accessed concurrently by different tasks operated from the same terminal or operated by different users employing respective terminals. A windows environment is generally employed in conjunction with an object based system to enable windows to be allocated to respective concurrent tasks. There follows an overview of an object based system in a windows environment which will help define terms used herein.
In its broadest sense, as used herein, the term OBJECT means an individually addressable entity that has associated state information and is capable of receiving and responding to messages sent to it.
Objects are generally implemented as a combination of data and method code which is normally stored on disk. An object may be INACTIVE, when it is identified simply as a disk file, or ACTIVE, when it has a PROCESS, or executable file, associated with it. When active, at least parts of the object are held in the computer RAM and the object is defined by the state of the associated process rather than by its file.
Objects can be LINKED to other objects so that changes in one are reflected in the object or objects with which it is linked by virtue of MESSAGES which are passed between the linked objects. The system is controlled by an OBJECT MANAGER which is an application running in the windows environment and which controls activation and deactivation of objects, and the passage of messages between objects.
An object is sometimes a CONTAINER which contains as notional parts other objects. Examples of container objects in a distributed office system are a desktop, folder and a document. A VARIABLE DIMENSION DATA OBJECT (VDO) is a data store of which the values of elements may be viewed and changed directly by a user.
Object based systems have suffered the disadvantage common to multi-tasking or multi-user systems sharing data files. This is that although, with careful record-locking procedures, different tasks or users can, in concurrent sessions, alter data in the same data file (or object) each alteration and display is effectively carried out independently. The users do not have immediate cross references and updating to changes made to other users to the data file at the same time.
We have devised a solution to this problem which depends on splitting an object between a SEMANTIC part (which defines the state of the object) and a PRESENTATION part (for presenting to a user the state of the object). Indeed, conceptually one can think of there being separate semantic objects and presentation objects. In addition, when using a windows user interface, there are windows for viewing objects and facilitating multi-tasking. In this specification, the presentation part or presentation object is something which is utilised by a window and forms part of the window for the time in which the window is viewing the object in question and generally a distinction between the window and the presentation part or object will not be made.
Semantic objects have data stored in a particular storage domain. A storage domain may be regarded as closely equivalent to a storage medium such as a hard disc or floppy disc in the sense that all objects in a given storage domain are on-line together or are off-line together. Consequently, a single machine may support a plurality of storage domains.
The present invention could be applied in a single computer having one or more storage domains but is primarily concerned with an object based system having a plurality of user stations. Such a system may be provided by a single central processing device having a plurality of user stations coupled to it, or it may be provided by a distributed processing network consisting of a number of independent processing units each having a respective station associated with it. In the system of the present invention an object has an implicit presentation, which will look the same however viewed.
It is possible to open one or more windows on each object. The windows manage the display and input/output (lexical) interaction in the system. The use of multiple windows in conjunction with an object enables employment of the techniques of sharing (multiple windows to a common object) and distributed (window on one machine and object on another) applications.
We define a VIEWER as an object which allows users to access other objects by providing the appearance of the object to the user and accepting user input for data manipulation. Viewers have hitherto been known as TASK WINDOWS, but a window is part only of the viewer. The object being viewed controls its own state and provides the methods for access to and manipulation of that state.
Users have the ability to NAVIGATE their viewers around the object world. In turn, the viewer is linked to different objects so as to allow the user to observe and manipulate the objects. It is important to note the concept of navigation of a viewer in this system. A user does not need to open a new window for each object.
When sharing or multi-user operations are being effected, each task or user associated with a particular object is a REFEREE of that object. It is ensured that each active object retains references to its referees so that they are sent messages to be notified of changes during object processing.
The semantic/presentation split allows multiple viewers to be attached to an object. It is important to remember in this case that all viewers are seeing the same object, not a version of it. This is important, as we have a basically `physical` model of the object world, when a user manipulates an object he is actually physically changing it for everyone. This could lead to conflict when two or more users are trying to manipulate the same thing. A solution is to provide a presence mechanism whereby referees of an object being viewed are notified of the presence of each other by indications in their respective viewers.
Indication of the presence of concurrent viewers of an object greatly facilitates the user's vision of the system and under-pins the user model which the system establishes. Instead of merely observing the effects of his own manipulations of data the user can be aware that other viewers are present and thus capable of separate manipulation of the same data.
A user always knows what he has requested by way of a manipulation. This is the local feedback provided by the viewer. The underlying object updates all viewers of its state, thus the user will see the end effect. In such conflict conditions it is not possible to guarantee that the request and the end effect match, but the user will not be misled as to what has happened. One of the important benefits of the presence mechanism is to help explain these situations to the user. The semantic/presentation split also allows viewers to be remote (from the object), without the user losing the benefit of immediate feedback of his manipulations.
Users themselves can move from one terminal to another. The identity of the users is preferably obtained from Personal Identity Cards which they use to log on to the system.
As an extension of the presence mechanism there may be provided a coupling facility whereby different viewers may be coupled together in a set so that navigation within the system of one viewer by its user has the effect of passing navigational messages to the other viewer or viewers in the set so that those other positions of the said one viewer. With this coupling facility, a first user can, via his viewer, conduct one or more other viewers around the system for guidance, instruction, or co-operative work.
Although the coupling mechanism may implement only navigational display messages, the principal advantage lies in the application of the navigational message to drive the coupled viewers in company with each other around the system. With such an arrangement, a hierarchy is preferably established, whereby one viewer is the guide and the or each other viewer is a follower.
The present invention employs the navigation facility in order to provide an enhancement to the system.